/**
 * @author Alex Yepez <ayepez@tradesystem.com.ec>
 * archivo js para la gestion de tareas programadas
 */

//elementos 
var formElemen = [];

$(function() {
    /* seleccionar elementos */
    /**inputs**/
    //lista de tipo de acciones
    formElemen['inputTipoAccion'] = $("#CampaniaTareaProgramada_accion_tipo");
    //lista de medios de envio
    formElemen['inputMedioEnvio'] = $("#CampaniaTareaProgramada_medio_envio");
    //validador de formulario
    formElemen['inputEnvioNoseyForm'] = $("#CampaniaTareaProgramada_noseyValidate");
    //lista de motivos
    formElemen['inputMotivo'] = $("#CampaniaTareaProgramada_motivo_id");
    //lista de plantillas
    formElemen['inputPantilla'] = $("#CampaniaTareaProgramada_plantilla_id");
    //lista de templates mandril
    formElemen['inputTemplate'] = $("#CampaniaTareaProgramada_template");
    //selector de clientes
    formElemen['inputSelectTodos'] = $("#CampaniaTareaProgramada_todos");

    /**divs**/
    //panel de medio envio
    formElemen['divMedioEnvio'] = $("#medioEnvio");
    //panel de formulario
    formElemen['divEnvioFormulario'] = $("#selectEnvioNosey");
    //panel de motivos y plantillas
    formElemen['divMotivoPlantilla'] = $("#selectMotivoPlantillaPanel");
    //templates
    formElemen['divTemplante'] = $("#selectTemplateMandrilPanel");
    //selectos todos
    formElemen['divTodos'] = $("#panelTodos");
    //selectos clientes
    formElemen['divPanelClientes'] = $("div#PanelClientes");
    //elementos del formulario
    formElemen['divElementsForm'] = $("div#panelElementsForm");
    /* acciones */
    //carga de medios de envio
    formElemen.inputTipoAccion.change(function() {
        formElemen.divTodos.fadeOut(170);
        if (formElemen.inputTipoAccion.val() != "")
        {
            $accionTipo = formElemen.inputTipoAccion.children("option[value = " + formElemen.inputTipoAccion.val() + "]").html();
            AjaxCargarListas({url: baseUrl + "campanias/campaniaTareaProgramada/ajaxGetMediosEnvio", data: {accion_tipo: $accionTipo},
                callBack: function(data) {
                    formElemen.inputMedioEnvio.html(data);
                    formElemen.inputMedioEnvio.selectBox("refresh");
                    formElemen.divMedioEnvio.fadeIn(170);
                    //avilitar el validador de envio de formulario
                    if ($accionTipo == "EMAIL")
                    {
                        formElemen.divMotivoPlantilla.fadeOut(170);
                    }
                    else if ($accionTipo == "SMS")
                    {

                        formElemen.divMotivoPlantilla.fadeOut(170);
                    }
                }});
        }
        else
        {
            formElemen.divMotivoPlantilla.fadeOut(170);
            formElemen.divMedioEnvio.fadeOut(170);
        }
    });
    //craga de plantillas 
    formElemen.inputMedioEnvio.change(function() {
        formElemen.divTodos.fadeOut(170);
        $tipoAccion = formElemen.inputTipoAccion.children("option[value = " + formElemen.inputTipoAccion.val() + "]").html();
        $tipoMedioEnvio = formElemen.inputMedioEnvio.children("option[value = " + formElemen.inputMedioEnvio.val() + "]").html();
        if (formElemen.inputMedioEnvio.val() != '')
        {

            if ($tipoAccion == 'SMS')
            {
                formElemen.divTemplante.fadeOut(170);
                formElemen.inputTemplate.val('');
                formElemen.divMotivoPlantilla.fadeIn(170);
                AjaxCargarListas({url: baseUrl + "sms/smsMotivo/ajaxGetMotivos", data: {}, callBack: function(data) {
                        formElemen.inputMotivo.html(data);
                        formElemen.inputMotivo.selectBox("refresh");
                        formElemen.inputPantilla.html("<option value=''> - Sin plantilla -</option>");
                        formElemen.inputPantilla.selectBox("refresh");
                    }});
            }
            else if ($tipoAccion == 'EMAIL')
            {
                if ($tipoMedioEnvio == 'YIIMAILER')
                {
                    formElemen.divMotivoPlantilla.fadeIn(170);
                    formElemen.divTemplante.fadeOut(170);
                    formElemen.inputTemplate.val('');
                    AjaxCargarListas({url: baseUrl + "mail/mailAsunto/ajaxGetAsuntos", data: {}, callBack: function(data) {
                            formElemen.inputMotivo.html(data);
                            formElemen.inputMotivo.selectBox("refresh");
                            formElemen.inputPantilla.html("<option value=''> - Sin plantilla -</option>");
                            formElemen.inputPantilla.selectBox("refresh");
                        }});
                }
                else if ($tipoMedioEnvio == 'MANDRILL')
                {
                    formElemen.divMotivoPlantilla.fadeOut(170);
                    formElemen.divTemplante.fadeIn(170);
                    formElemen.inputPantilla.val('');
                    formElemen.inputMotivo.val('');

                    AjaxCargarListas({url: baseUrl + "campanias/campaniaTareaProgramada/ajaxGetTemplatesMandrill", data: {}, callBack: function(data) {
                            formElemen.inputTemplate.html(data);
                            formElemen.inputTemplate.selectBox("refresh");
                        }});
                }
            }
        }
        else {
            formElemen.divMotivoPlantilla.fadeOut(170);
        }
    });
    //carga de plantillas
    formElemen.inputMotivo.change(function() {
        formElemen.divTodos.fadeOut(170);
        $tipoAccion = formElemen.inputTipoAccion.children("option[value = " + formElemen.inputTipoAccion.val() + "]").html();
        if (formElemen.inputMotivo.val() != '')
        {
            if ($tipoAccion == 'SMS')
            {
                AjaxCargarListas({url: baseUrl + "sms/smsMotivo/plantillaMotivo", data: {SmsForm: {motivo_id: formElemen.inputMotivo.val()}}, callBack: function(data) {
                        formElemen.inputPantilla.html(data);
                        formElemen.inputPantilla.selectBox("refresh");
                    }});
            }
            else if ($tipoAccion == 'EMAIL')
            {
                $tipoMedioEnvio = formElemen.inputMedioEnvio.children("option[value = " + formElemen.inputMedioEnvio.val() + "]").html();
                if ($tipoMedioEnvio == 'YIIMAILER')
                {
                    formElemen.inputTemplate.val('');
                    formElemen.divMotivoPlantilla.fadeIn(170);
                    formElemen.divTemplante.fadeOut(170);

                    AjaxCargarListas({url: baseUrl + "mail/mailPlantilla/ajaxGetPlantillas", data: {mail_asunto_id: formElemen.inputMotivo.val()}, callBack: function(data) {
                            formElemen.inputPantilla.html(data);
                            formElemen.inputPantilla.selectBox("refresh");
                        }});
                }

            }
        }
        else
        {
            formElemen.inputPantilla.html("<option value=''> - Sin plantilla -</option>");
            formElemen.inputPantilla.selectBox("refresh");
        }
    });
    //mostrar selelecion de todos
    formElemen.inputPantilla.change(function() {
        if (formElemen.inputPantilla.val() != '')
        {
            formElemen.divTodos.fadeIn(170);
        } else {
            formElemen.divTodos.fadeOut(170);
        }
    });
    //mostrar selelecion de todos
    formElemen.inputTemplate.change(function() {
        if (formElemen.inputTemplate.val() != '')
        {
            formElemen.divTodos.fadeIn(170);
        } else {
            formElemen.divTodos.fadeOut(170);
        }
    });

    /**selector del Grid de clientes**/
    loadActionClientesTpSelect({contenedor: 'Clientestp'});

});
/**
 * 
 * @author Alex Yepez <ayepez@tradesystem.com.ec>
 * carga options por ajax
 * @param options
 */
function AjaxCargarListas(options)
{
    $.ajax({
        url: options.url,
        type: 'POST',
        data: options.data,
        beforeSend: function(xhr) {
            if (options.beforeCall)
            {
                options.beforeCall();

            }
        },
        success: function(data) {
            if (options.callBack)
            {
                options.callBack(data);

            }
        }
    });
}

function saveTareaProgramanda(Formulario) {
    $sendValidate = false;
    if (formElemen.inputSelectTodos.val() == 0) {
        if (selectedClientesTpValues != '')
        {
            $("#CampaniaTareaProgramada_todos_em_").html("");
            $sendValidate = true;
        }
        else {
            $("#CampaniaTareaProgramada_todos_em_").html("Seleccione por lo menos un cliente");
            $("#CampaniaTareaProgramada_todos_em_").attr('style', '');
        }
    }
    else {
        $("#CampaniaTareaProgramada_todos_em_").html("");
        $sendValidate = true;
    }
    if ($sendValidate) {
        BloquearBotonesModal(Formulario);
        ajaxValidarFormulario({
            formId: Formulario,
            successCall: function(data) {
                AjaxCrearAccionTP({
                    formId: Formulario,
                    beforeCall: function() {
                        //ocultar el modal
                        $("#mainModal").modal("hide");
                    },
                    successCall: function(data) {

                        if ($("#tareasProgramadas-grid").length == 0)
                        {

                            window.location.reload();
                        }
                        else
                        {
                            $.fn.yiiGridView.update("tareasProgramadas-grid");
                        }
                        AjaxActualizarActividades();

                    }
                });
            },
            errorCall: function(data) {
                formElemen.divElementsForm.fadeIn(170);
                DesBloquearBotonesModal(Formulario, 'Enviar', 'AjaxCrearAccion');
            }
        });
    }
}

/**
 *@description envio de accion en segundo plano
 *@author Alex Yépez <ayepez@tradesystem.com.ec>
 *@param {obj} options opciones de envío
 */
function AjaxCrearAccionTP(options) {
    $.ajax({
        type: 'POST',
        url: $(options.formId).attr('action'),
        data: $(options.formId).serialize() + '&' + 'clientes=' + selectedClientesTpValues,
        dataType: 'json',
        beforeSend: function(xhr) {
            //Acciones a reaqlizar antes del envio
            if (options.beforeCall)
            {
                options.beforeCall();
            }
        },
        success: function(data) {
//            console.log(data);
            //acciones a realizar cuando la respuesta es positiva 
            if (data.success) {
                if (options.successCall)
                {
                    options.successCall(data);
                }
            } else {
                //acciones a realizar cuando existen errores
                if (options.errorCall)
                {
                    options.errorCall(data);
                }
            }
        }
    });
}
function ajaxAgregar(id_contactos, alerta, campania_id) {
    if (selectedClientesTpValues.Medioenvio != '')
    {
        console.log(selectedClientesTpValues.Medioenvio);
        $.ajax({
            type: 'POST',
            url: baseUrl + "crm/contacto/ajaxCargarFormularioMedioEnvio",
            dataType: 'json',
            data: {
                medio: selectedClientesTpValues.Medioenvio,
                id_contactos: id_contactos,
                alerta: alerta,
                campania_id: campania_id
            },
            success: function(data, textStatus, jqXHR) {
                if (data.success)
                {
                    showModalData(data.html);
                    if (data.successMessage)
                    {
                        $("div#messageEmail").html('<button class="close" data-dismiss="alert">×</button><strong>Informaci&oacute;n:</strong> ' + data.successMessage);
                    }
                }
                else {
                    $("#mainModal").modal('hide');
                    bootbox.alert(data.error, function() {
                        $("#mainModal").modal('show');
                    });
                }
            }
        });
    }
    else
    {
        $("#mainModal").modal('hide');
        bootbox.alert('Seleccione por lo menos un medio de envio.', function() {
            $("#mainModal").modal('show');
        });
    }
}
function loadActionClientesTpSelect(options) {
    var inputCheckboxClientesTpElement = [];
    inputCheckboxClientesTpElement['checkAll'] = $("input[type='checkbox'][container='" + options.contenedor + "']#selectall");
    inputCheckboxClientesTpElement['checkRaw'] = $("input[type='checkbox'][container='" + options.contenedor + "'].ckeckRow");
    inputCheckboxClientesTpElement.checkRaw.change(function() {
        selectClientesTpRow($(this).attr('id'), $(this).attr('container'));
    });
    if (inputCheckboxClientesTpElement.checkAll)
    {
        inputCheckboxClientesTpElement.checkAll.change(function() {
            $contenedorAll = $(this).attr('container');
            if ($(this).is(':checked'))
            {
                $("input[container='" + $contenedorAll + "'].ckeckRow").prop('checked', true);
            }
            else
            {
                $("input[container='" + $contenedorAll + "'].ckeckRow").prop('checked', false);
            }
            $.each(inputCheckboxClientesTpElement.checkRaw, function() {
                if ($contenedorAll == $(this).attr('container'))
                {
                    selectClientesTpRow($(this).attr('id'), $(this).attr('container'));
                }
            });
        });
    }
    if (selectedClientesTpValues != '') {
        updateClientesTpCheckedRaw(options.contenedor);
    }
}
function updateClientesTpCheckedRaw(container) {

    if (selectedClientesTpValues != '')
    {
        $.each(selectedClientesTpValues, function(index, value) {
            var check_row = $('input[container="' + container + '"]#ckb_' + value);
            if (check_row)
            {
                check_row.prop('checked', true);
                check_row.parent().parent().addClass('selected');
            }
        });
    }
}
function selectClientesTpRow(element, contenedor)
{
    $elementCKB = $("input[id='" + element + "'][container='" + contenedor + "'].ckeckRow");
    if ($elementCKB.is(':checked'))
    {
        $elementCKB.parent().parent().addClass('selected');
        if ($.inArray($elementCKB.val(), selectedClientesTpValues) == -1) {
            selectedClientesTpValues.push($elementCKB.val());
        }
    }
    else
    {
        $elementCKB.parent().parent().removeClass('selected');
        deleteClientesTpElemen(selectedClientesTpValues, $elementCKB.val());
    }
}
function deleteClientesTpElemen(contenerArray, val) {
    var index = $.inArray(val, contenerArray);
    if (index != -1) {
        contenerArray.splice(index, 1);
    }
}
